﻿//-----------------------------------------------------------------------
// <copyright file="MonthlyUsage.cs" company="Redmist">
//     Copyright (c) Damien T Smith. All rights reserved.
// </copyright>
// <author>Damien Smith</author>
//-----------------------------------------------------------------------

namespace Redmist.UsageMonitor.UsageData
{
    /// <summary>Stores all of the raw data extracted from a monthly usage HTML page.</summary>
    public class MonthlyUsage
    {
        /// <summary>Initializes a new instance of the MonthlyUsage class.</summary>
        /// <param name="downloadStatistics">A Redmist.UsageMonitor.UsageData.UsageStatistics representing the basic download usage details.</param>
        /// <param name="uploadStatistics">A Redmist.UsageMonitor.UsageData.UsageStatistics representing the basic upload usage details.</param>
        /// <param name="anniversaryData">A Redmist.UsageMonitor.UsageData.AnniversaryData representing the anniversary details.</param>
        /// <param name="quota">The monthly quota in megabytes.</param>
        /// <param name="peakDownloadHistory">An array of integers representing the peak download history.</param>
        /// <param name="offPeakDownloadHistory">An array of integers representing the off peak download history.</param>
        /// <param name="peakUploadHistory">An array of integers representing the peak upload history.</param>
        /// <param name="offPeakUploadHistory">An array of integers representing the off peak upload history.</param>
        /// <param name="planName">A System.String representing the plan name.</param>
        /// <param name="excessRate">A System.String representing the rate at which excess usage is charged.</param>
        /// <param name="excessCharges">A System.String representing the excess charges for the current billing period.</param>
        public MonthlyUsage(UsageStatistics downloadStatistics, UsageStatistics uploadStatistics, AnniversaryData anniversaryData, int quota, int[] peakDownloadHistory, int[] offPeakDownloadHistory, int[] peakUploadHistory, int[] offPeakUploadHistory, string planName, string excessRate, string excessCharges)
        {
            this.DownloadStatistics = downloadStatistics;
            this.UploadStatistics = uploadStatistics;
            this.Quota = quota;
            this.AnniversaryData = anniversaryData;
            this.PeakDownloadHistory = peakDownloadHistory;
            this.OffPeakDownloadHistory = offPeakDownloadHistory;
            this.PeakUploadHistory = peakUploadHistory;
            this.OffPeakUploadHistory = offPeakUploadHistory;
            this.PlanName = planName;
            this.ExcessRate = excessRate;
            this.ExcessCharges = excessCharges;
        }

        /// <summary>Gets a Redmist.UsageMonitor.UsageData.UsageStatistics representing the basic download usage details.</summary>
        public UsageStatistics DownloadStatistics { get; private set; }

        /// <summary>Gets a Redmist.UsageMonitor.UsageData.UsageStatistics representing the basic upload usage details.</summary>
        public UsageStatistics UploadStatistics { get; private set; }

        /// <summary>Gets a Redmist.UsageMonitor.UsageData.AnniversaryData representing the anniversary details.</summary>
        public AnniversaryData AnniversaryData { get; private set; }

        /// <summary>Gets the monthly quota in megabytes.</summary>
        public int Quota { get; private set; }

        /// <summary>Gets an array of integers representing the peak download history.</summary>
        public int[] PeakDownloadHistory { get; private set; }

        /// <summary>Gets an array of integers representing the off peak download history.</summary>
        public int[] OffPeakDownloadHistory { get; private set; }

        /// <summary>Gets an array of integers representing the peak upload history.</summary>
        public int[] PeakUploadHistory { get; private set; }

        /// <summary>Gets an array of integers representing the off peak download history.</summary>
        public int[] OffPeakUploadHistory { get; private set; }

        /// <summary>Gets a System.String representing the plan name.</summary>
        public string PlanName { get; private set; }

        /// <summary>Gets a System.String representing the rate at which excess usage is charged.</summary>
        public string ExcessRate { get; private set; }

        /// <summary>Gets a System.String representing the excess charges for the current billing period.</summary>
        public string ExcessCharges { get; private set; }
    }
}
